home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / dev / gui / gui4cli.lha / Gui4Cli / Ext / GCSound / GCSound.gc < prev    next >
Text File  |  1999-04-21  |  17KB  |  659 lines

  1. G4C
  2.  
  3. WINBIG 40 11 233 220 'GCSound 8SVX Player'
  4. WinType 11110001
  5.  
  6. ; ===============================================================
  7. ;       general events
  8. ; ===============================================================
  9.  
  10. xOnLoad
  11.    mode = DIR                             ; can be SAMPLE or DIR
  12.    selswitch = 0                          ; delect/deselect dir lv switch
  13.    setgad #this 10 hide                   ; hide the samples lv
  14.    setgad gcsound.gc 2 HIDE               ; and it's text box
  15.    extract gcsound.gc guipath mypath      ; save lists of files -
  16.    JoinFile $mypath Lists prefs           ; in my dir/Lists
  17.    joinfile $prefs List_1 prefs
  18.    GuiOpen #this
  19.    name = ''                              ; set these for safety
  20.    volume = 64
  21.    speed = -1
  22.    times = 0
  23.    status = IDLE
  24.    setwin = CLOSED
  25.    gcsound.set/oldspeed = -1
  26.    lvuse gcsound.gc 1
  27.    setwintitle #this '$$lv.dir'
  28.    run 'guis:ext/gcsound/gcsound'         ; load extension
  29.  
  30. xOnClose
  31.    guiclose #this
  32.    setgad #this 5 on                      ; appicon on
  33.  
  34. xOnQuit
  35.    guiquit gcsound.pop
  36.    guiquit gcsound.set
  37.    call gcsound quit
  38.  
  39. xOnRMB
  40.    if $mode = SAMPLE
  41.       guiopen gcsound.pop
  42.    else
  43.       ; dir mode - quit any playing sounds
  44.       call gcsound stop ; stop all sounds
  45.    endif
  46.  
  47. xOnFail
  48.    guiwindow #this resume
  49.  
  50. xAppicon -1 -1 :gcsound.gc 'GCSound' '' OFF
  51.    gadid 5
  52.    guiopen #this
  53.    setgad #this 5 off
  54.  
  55. ; ===============================================================
  56. ;       the dir listview
  57. ; ===============================================================
  58.  
  59. XLISTVIEW 0 0 211 221 "" file "" 0 DIR
  60.    gadid 1
  61.    gadfont #mono 8 000
  62.    ;LVColors   2 1 3 2        ; uncomment this line for genlocking
  63.    ; on choosing a file by double click, play it..
  64.    if $file H= 'FORM????8SVX'
  65.       call gcsound sound $file 0 64 -1
  66.    ELSE
  67.       guiload guis:tools/rtn/filepop $file
  68.    endif
  69.  
  70. xlvdirhook 1
  71.    setwintitle #this '$$lv.dir'
  72.  
  73. ; ===============================================================
  74. ;       the samples listview - (should make it DBase)
  75. ; ===============================================================
  76.  
  77. XLISTVIEW 0 0 211 220 "" sample t:soundtemp 5 MULTI
  78.    gadid 10
  79.    gadfont #mono 8 000
  80.    ;LVColors   2 1 3 2        ; uncomment this line for genlocking
  81.  
  82.    gosub gcsound.gc splitline '$sample'
  83.    if $status = LOAD
  84.       call gcsound play $name $times $volume $speed
  85.       status = PLAY
  86.       gosub gcsound.gc joinline
  87.       lvput '$rec'
  88.    elseif $status = IDLE
  89.       call gcsound load $path $name
  90.       call gcsound play $name $times $volume $speed
  91.       status = PLAY
  92.       gosub gcsound.gc joinline
  93.       lvput '$rec'
  94.    endif
  95.    lvsort ASC
  96.  
  97. ; ===============================================================
  98. ;       dir lv control buttons
  99. ; ===============================================================
  100.  
  101. XBUTTON 212 0 20 12 "P"
  102.    gadid 50
  103.    lvuse #this 1
  104.    lvdir parent
  105.    setwintitle #this '$$lv.dir'
  106.  
  107. XBUTTON 212 12 20 12 "D"
  108.    gadid 50
  109.    lvuse #this 1
  110.    lvdir disks
  111.    setwintitle #this 'Disks'
  112.  
  113. XBUTTON 212 24 20 12 "S"
  114.    gadid 50
  115.    lvuse #this 1
  116.    if $selswitch = 1
  117.       lvdir all
  118.       selswitch = 0
  119.    else
  120.       lvdir none
  121.       selswitch = 1
  122.    endif
  123.  
  124. XBUTTON 212 44 20 12 "X"
  125.     gadhelp                                'Delete selected files'
  126.     gadid 50
  127.     lvuse #this 1
  128.     lvaction delete ask
  129.  
  130. ; ===============================================================
  131. ;       dir lv - add selected
  132. ; ===============================================================
  133.  
  134. XBUTTON 212 64 20 12 +
  135.     gadhelp                                'Add selected to list'
  136.    gadid 50
  137.    lvuse gcsound.gc 1
  138.    lvmulti first
  139.    while $$lv.line > ''            ; skip dirs
  140.    and $$lv.type == DIR
  141.       lvmulti next
  142.    endwhile
  143.    while $$lv.line > ''            ; skip dirs
  144.       if $file H= 'FORM????8SVX'
  145.          lvuse gcsound.gc 10
  146.          lvsearch '$file' ci first ; avoid duplicate entries
  147.          if $$lv.line = ''
  148.             extract file file fname
  149.             rec = '                              '
  150.             rec[0][30] = $fname
  151.             appvar rec '0 64 -1 $file'
  152.             lvadd $rec
  153.          endif
  154.          lvuse gcsound.gc 1
  155.       endif
  156.       lvmulti off
  157.       lvmulti next
  158.    endwhile
  159.  
  160. ; ===============================================================
  161. ;       dir lv - switch to samples lv
  162. ; ===============================================================
  163.  
  164. XBUTTON 212 76 20 16 "Ok"
  165.    gadid 50
  166.    gcsound.gc/mode = SAMPLE
  167.    setgad gcsound.gc 10 SHOW               ; show the samples lv
  168.    setgad gcsound.gc 2 SHOW                ; show the textin gad
  169.    setgad gcsound.gc 1  HIDE               ; hide dir lv
  170.    setgad gcsound.gc 50  HIDE              ; hide all dir lv gads
  171.    redraw gcsound.gc
  172.    setwintitle gcsound.gc 'GCSound 8SVX player'
  173.  
  174. ; ===============================================================
  175. ;       Select lv - buttons
  176. ; ===============================================================
  177.  
  178. XBUTTON 212 0 20 12 "<"
  179.    Gadhelp                       'Select samples'
  180.    gadid 2
  181.    gosub gcsound.pop dirmode
  182.  
  183. XBUTTON 212 16 20 12 "P"
  184.    Gadhelp                       'Play selected samples'
  185.    gadid 2
  186.    gosub gcsound.pop playsamp
  187.  
  188. XBUTTON 212 28 20 12 "?"
  189.    Gadhelp                       'Adjust sample'
  190.    gadid 2
  191.    lvuse gcsound.gc 10
  192.    lvmulti first
  193.    if $$lv.line > '' 
  194.       gosub gcsound.set settings '$gcsound.gc/sample'
  195.    endif
  196.  
  197. XBUTTON 212 44 20 12 "U"
  198.    Gadhelp                       'Unload all samples'
  199.    gadid 2
  200.    lvuse gcsound.gc 10
  201.    lvmulti all
  202.    setgad gcsound.gc 10 HIDE
  203.    guiwindow gcsound.gc wait
  204.    gosub gcsound.pop unload
  205.    setgad gcsound.gc 10 SHOW
  206.    guiwindow gcsound.gc resume
  207.    lvmulti none
  208.  
  209. XBUTTON 212 56 20 12 "R"
  210.    Gadhelp                       'Remove selected from list'
  211.    gadid 2
  212.    gosub gcsound.pop remove
  213.  
  214. XBUTTON 212 72 20 12 "L"
  215.    Gadhelp                       'Load new list'
  216.    gadid 2
  217.    local loadname
  218.    loadname = ''
  219.    ReqFile -1 -1 300 -40 'Load list:' SAVE loadname #$prefs
  220.    if $loadname > ''
  221.       lvuse #this 10
  222.       lvchange $loadname
  223.       prefs = $loadname
  224.    endif
  225.  
  226. XBUTTON 212 84 20 12 "S"
  227.    Gadhelp                       'Save list'
  228.    gadid 2
  229.    local savename
  230.    savename = ''
  231.    ReqFile -1 -1 300 -40 'Save list:' SAVE savename #$prefs
  232.    if $savename > ''
  233.       lvuse #this 10
  234.       lvsave $savename
  235.    endif
  236.  
  237. ; ===============================================================
  238. ;       ROUTINE - Split the line into it's components
  239. ; ===============================================================
  240.  
  241. xRoutine splitline line
  242.    ; split the line into it's components
  243.  
  244.    origline = '$line'   ; store original line
  245.    parsevar line
  246.  
  247.    ; get name & mode
  248.    name = $$parse.0
  249.    if $name[0][5] = ''
  250.       status = LOAD
  251.       name = $name[5]
  252.    elseif $name[0][7] = ''
  253.       status = PLAY
  254.       name = $name[7]
  255.    else
  256.       status = IDLE
  257.    endif
  258.    extract name clean name
  259.  
  260.    times  = $$parse.1
  261.    extract times clean times
  262.    volume = $$parse.2
  263.    extract volume clean volume
  264.    speed  = $$parse.3
  265.    extract speed clean speed
  266.    path = $$parse.4
  267.    extract path clean path
  268.  
  269.    if $setwin = OPEN
  270.       gosub gcsound.set initsetgads
  271.    endif
  272.  
  273. ; ===============================================================
  274. ;       ROUTINE - Join the line & put it back in the list
  275. ; ===============================================================
  276.  
  277. xRoutine joinline
  278.    rec = '                              '
  279.    rec[0][30] = $name
  280.    appvar rec '$times $volume $speed $path'
  281.  
  282.    ; add esc seq
  283.    if $status = PLAY
  284.       rec = '$rec'
  285.    elseif $status = LOAD
  286.       rec = '$rec'
  287.    endif
  288.  
  289. ; ===============================================================
  290. ;       ROUTINE - find line place & put it
  291. ; ===============================================================
  292.  
  293. xRoutine putline
  294.    ; look for old line & replace it
  295.  
  296.    lvuse gcsound.gc 10
  297.    lvsearch '$path' ci first
  298.    if $$lv.line > ''
  299.       lvput '$rec'
  300.    else
  301.       ezreq 'Sample $name was removed!' OK ''
  302.    endif
  303.  
  304.  
  305. ; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  306. ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  307. ; ###############################################################
  308.  
  309.         NEWFILE gcsound.pop     ; pop-up